
import { uniqueId } from 'lodash'
import util from '@/libs/util.js'
import layoutHeaderAside from '@/layout/header-aside'
// 由于懒加载页面太多的话会造成webpack热更新太慢，所以开发环境不使用懒加载，只有生产环境使用懒加载
const _import = require('@/libs/util.import.' + process.env.NODE_ENV)

/**
 * 权限
 * @param {*} key
 */
export function hasPermission (key) {
  if (!key) {
    return true
  }
  // 获取所有权限
  const powers = util.storage.get('powers')
  if (!powers) { // 如果一个权限都没有，路由中标记需要权限的路由都不能访问，并跳转到401
    return false
  }
  return powers.indexOf(key) !== -1 || false
}
/**
 * 处理菜单
 * @param {*}
 */
export function handleMenu (data) {
  return data.map(e => ({
    ...e,
    path: e.path || uniqueId('zero-path-'),
    title: e.name,
    ...e.children ? {
      children: handleMenu(e.children)
    } : {
      children: undefined
    }
  }))
}
/**
 * 处理处理路由
 * @param {*}
 */
export function handleRouter (data) {
  /**
   * type ==0菜单，type==1路由，type==2权限
   * 将第一个路由设置为首页
   */
  var routerArray = {}
  for (var item in data) {
    var router = data[item]
    var path = router.path.substr(1)
    if (item === '0') {
      // 设置首页的路径和名称
      util.storage.set('indexPath', path)
      util.storage.set('indexName', router.name)
      routerArray.path = '/'
      routerArray.redirect = path
      routerArray.component = layoutHeaderAside
      routerArray.children = [{
        path: router.path,
        name: path,
        meta: { title: router.name, cache: router.cache === 'T' },
        component: _import(path.replace(/([A-Z])/g, '/$1').toLowerCase())
      }]
    } else {
      routerArray.children.push({
        path: router.path,
        name: path,
        meta: { title: router.name, cache: router.cache === 'T' },
        component: _import(path.replace(/([A-Z])/g, '/$1').toLowerCase())
      })
    }
  }
  return [routerArray]
}
